<html>
    <head>
        <title>服务的释放</title>
    </head>
    <body>
        <script>
            /*
                        十六、服务的释放
                                    如果你使用了构造函数或属性注入，则无需担心释放服务的资源。
                                    但是，你已经从 IServiceProvider 解析了服务，在某些情况下，你可能需要注意释放服务资源。

                                    ASP.NETCore在当前HTTP请求结束时释放所有服务，即使你直接从IServiceProvider解析（假设你注入了IServiceProvider）。
                                    但是，在一些情况喜下，你可能希望释放手动解析的服务：

                                            1、你的代码在ASP.NET核心请求之外执行，执行程序尚未处理服务范围

                                            2、你有对根服务提供者的引用

                                            3、你可能希望立即释放和处置服务（例如，你可能会创建太多使用大量内存的服务，并且不想过度使用内存）

                                    在任何情况下，你都可以创建一个服务作用域块来安全地立即释放服务：
                                            using (var scope = _serviceProvider.CreateScope())
                                            {
                                                var service1 = scope.ServiceProvider.GetService<IMyService1>();
                                                var service2 = scope.ServiceProvider.GetService<IMyService2>();
                                            }
                                            当创建的作用域被释放时（在using块的末尾），这两个服务都会被释放。
                    */
        </script>
    </body>
</html>